﻿using SD.Infrastructure.DTOBase;
using SlamDunk.MES.IAppService.DTOs.Outputs.FoundationContext;
using SlamDunk.ValueObjects.Enums;
using SlamDunk.ValueObjects.Structs;
using System;
using System.Runtime.Serialization;

namespace SlamDunk.MES.IAppService.DTOs.Outputs.DefinitionContext
{
    /// <summary>
    /// 工艺段数据传输对象
    /// </summary>
    [DataContract]
    public class ProcessSegmentInfo : BaseDTO
    {
        #region 工艺Id —— Guid ProcessId
        /// <summary>
        /// 工艺Id
        /// </summary>
        [DataMember]
        public Guid ProcessId { get; set; }
        #endregion

        #region 工时定额 —— TimeSpan DurationQuota
        /// <summary>
        /// 工时定额
        /// </summary>
        [DataMember]
        public TimeSpan DurationQuota { get; set; }
        #endregion

        #region 工艺指导书 —— string DirectivePath
        /// <summary>
        /// 工艺指导书
        /// </summary>
        /// <remarks>PDF路径</remarks>
        [DataMember]
        public string DirectivePath { get; set; }
        #endregion

        #region 工厂模型Id —— Guid? FacilityId 
        /// <summary>
        /// 工厂模型Id
        /// </summary>
        [DataMember]
        public Guid? FacilityId { get; set; }
        #endregion

        #region 工位Id —— Guid? WorkStationId 
        /// <summary>
        /// 工位Id
        /// </summary>
        [DataMember]
        public Guid? WorkStationId { get; set; }
        #endregion

        #region 表单模式 —— FormMode FormMode
        /// <summary>
        /// 表单模式
        /// </summary>
        [DataMember]
        public FormMode FormMode { get; set; }
        #endregion

        #region 表单定义 —— FormDefinition FormDefinition
        /// <summary>
        /// 表单定义
        /// </summary>
        [DataMember]
        public FormDefinition FormDefinition { get; set; }
        #endregion

        #region 是否需质检 —— bool NeedToInspect
        /// <summary>
        /// 是否需质检
        /// </summary>
        [DataMember]
        public bool NeedToInspect { get; set; }
        #endregion

        #region 排序 —— int Sort
        /// <summary>
        /// 排序
        /// </summary>
        [DataMember]
        public int Sort { get; set; }
        #endregion

        #region 描述 —— string Description
        /// <summary>
        /// 描述
        /// </summary>
        [DataMember]
        public string Description { get; set; }
        #endregion


        //导航属性

        #region 导航属性 - 工厂模型 —— FacilityInfo FacilityInfo
        /// <summary>
        /// 导航属性 - 工厂模型
        /// </summary>
        [DataMember]
        public FacilityInfo FacilityInfo { get; set; }
        #endregion

        #region 导航属性 - 工位 —— WorkStationInfo WorkStationInfo
        /// <summary>
        /// 导航属性 - 工位
        /// </summary>
        [DataMember]
        public WorkStationInfo WorkStationInfo { get; set; }
        #endregion
    }
}
